{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> 原文地址 [www.cnblogs.com](https://www.cnblogs.com/meandme/p/10112380.html)\n",
    "\n",
    "**一、四遥信息体基地址范围**\n",
    "\n",
    "104 调度规约有 1997 年和 2002 年两个版本，在流程上没有什么变化，02 版只是在 97 版上扩展了遥测、遥信等信息体基体址，区别如下：\n",
    "\n",
    "<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td valign=\"top\" width=\"72\"><p><strong>类别</strong></p></td><td valign=\"top\" width=\"132\"><p><strong>1997</strong><strong>版基地址</strong></p></td><td valign=\"top\" width=\"144\"><p><strong>2002</strong><strong>版基地址</strong></p></td></tr><tr><td valign=\"top\" width=\"72\"><p>遥信</p></td><td valign=\"top\" width=\"132\"><p>1H------400H</p></td><td valign=\"top\" width=\"144\"><p>1H------4000H</p></td></tr><tr><td valign=\"top\" width=\"72\"><p>遥测</p></td><td valign=\"top\" width=\"132\"><p>701H------900H</p></td><td valign=\"top\" width=\"144\"><p>4001H------5000H</p></td></tr><tr><td valign=\"top\" width=\"72\"><p>遥控</p></td><td valign=\"top\" width=\"132\"><p>B01H------B80H</p></td><td valign=\"top\" width=\"144\"><p>6001H------6100H</p></td></tr><tr><td valign=\"top\" width=\"72\"><p>设点</p></td><td valign=\"top\" width=\"132\"><p>B81H------COOH</p></td><td valign=\"top\" width=\"144\"><p>6201H------6400H</p></td></tr><tr><td valign=\"top\" width=\"72\"><p>电度</p></td><td valign=\"top\" width=\"132\"><p>C01H------C80H</p></td><td valign=\"top\" width=\"144\"><p>6401H------6600H</p></td></tr></tbody></table>\n",
    "\n",
    "**二、一些报文字节数的设置**\n",
    "\n",
    "<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td valign=\"top\" width=\"132\"><p><strong>类别</strong></p></td><td valign=\"top\" width=\"144\"><p><strong>配置方式</strong></p></td></tr><tr><td valign=\"top\" width=\"132\"><p>公共地址字节数</p></td><td valign=\"top\" width=\"144\"><p>2</p></td></tr><tr><td valign=\"top\" width=\"132\"><p>传输原因字节数</p></td><td valign=\"top\" width=\"144\"><p>2</p></td></tr><tr><td valign=\"top\" width=\"132\"><p>信息体地址字节数</p></td><td valign=\"top\" width=\"144\"><p>3</p></td></tr></tbody></table>\n",
    "\n",
    "此配置要根据主站来定，有的主站可能设为 1，1，2，我们要改与主站一致。\n",
    "\n",
    "**三、详细报文分析**\n",
    "\n",
    "以公共地址字节数 = 2，传输原因字节数 = 2，信息体地址字节数 = 3 为例对一些基本的报文分析\n",
    "\n",
    "**第一步：首次握手（U 帧）**\n",
    "\n",
    "发送→激活传输启动     ：**68**（启动符）**04**（长度）**07**（控制域）**00  00  00**\n",
    "\n",
    "接收→确认激活传输启动 ： **68**（启动符）**04**（长度）**0B**（控制域）**00  00  00**\n",
    "\n",
    "**第二步：总召唤（I 帧）**\n",
    "\n",
    "召唤 YC、YX（可变长 I 帧）初始化后定时发送总召唤，每次总召唤的间隔时间一般设为 15 分钟召唤一次，不同的主站系统设置不同。\n",
    "\n",
    "发送→总召唤     ：\n",
    "\n",
    "**68**（启动符）**0E**（长度）**00  00**（发送序号）**00  00**（接收序号）**64**（类型标示）**01**（可变结构限定词）**06  00**（传输原因）**01  00**（公共地址即 RTU 地址）**00 00 00**（信息体地址）**14**（区分是总召唤还是分组召唤，02 年修改后的规约中没有分组召唤）\n",
    "\n",
    "接收→S 帧 ：\n",
    "\n",
    "注意：记录接收到的长帧，双方可以按频率发送，比如接收 8 帧 I 帧回答一帧 S 帧，也可以要求接收 1 帧 I 帧就应答 1 帧 S 帧。\n",
    "\n",
    "**68****04  01  00  02  00**\n",
    "\n",
    "接收→总召唤确认（发送帧的镜像，除传送原因不同） ：\n",
    "\n",
    "**68**（启动符）**0E**（长度）**00  00**（发送序号）**00  00**（接收序号）**64**（类型标示）**01**（可变结构限定词）**07  00**（传输原因）**01  00**（公共地址即 RTU 地址）**00 00 00**（信息体地址）**14**（同上）\n",
    "\n",
    "发送→S 帧 ：\n",
    "\n",
    "注意：记录接收到的长帧，双方可以按频率发送，比如接收 8 帧 I 帧回答一帧 S 帧，也可以要求接收 1 帧 I 帧就应答 1 帧 S 帧。\n",
    "\n",
    "**68  04  01  00  02  00**\n",
    "\n",
    "接收→YX 帧（以类型标识 1 为例） ：\n",
    "\n",
    "**68**（启动符）**1A**（长度）**02  00**（发送序号）**02  00**（接收序号）**01**（类型标示，单点遥信）**04**（可变结构限定词，有 4 个遥信上送）**14  00**（传输原因，响应总召唤）**01  00**（公共地址即 RTU 地址）**03 00 00**（信息体地址，第 3 号遥信）**00**（遥信分）\n",
    "\n",
    "发送→S 帧 ：\n",
    "\n",
    "**68  04  01  00  04  00**\n",
    "\n",
    "接收→YX 帧（以类型标识 3 为例） ：\n",
    "\n",
    "**68**（启动符）**1E**（长度）**04  00**（发送序号）**02  00**（接收序号）**03**（类型标示，双点遥信）**05**（可变结构限定词，有 5 个遥信上送）**14  00**（传输原因，响应总召唤） **01  00**（公共地址）**01 00 00**（信息体地址，第 1 号遥信）**02**（遥信合）**06 00 00**（信息体地址，第 6 号遥信）**02**（遥信合）**0A 00 00**（信息体地址，第 10 号遥信）**01**（遥信分）**0B 00 00**（信息体地址，第 11 号遥信）**02**（遥信合）**0C 00 00**（信息体地址，第 12 号遥信）**01**（遥信分）\n",
    "\n",
    "发送→S 帧 ：\n",
    "\n",
    "**68  04  01  00  06  00**\n",
    "\n",
    "接收→YC 帧（以类型标识 9 为例） ：\n",
    "\n",
    "**68**（启动符）**13**（长度）**06  00**（发送序号）**02  00**（接收序号）**09**（类型标示，带品质描述的遥测）**82**（可变结构限定词，有 2 个连续遥测上送）**14  00**（传输原因，响应总召唤）**01  00**（公共地址）**01 07 00**（信息体地址，从 0X0701 开始第 0 号遥测）**A1 10**（遥测值 10A1）**00**（品质描述）**89 15**（遥测值 1589）**00**（品质描述）\n",
    "\n",
    "发送→S 帧 ：\n",
    "\n",
    "**68  04  01  00  08  00**\n",
    "\n",
    "接收→结束总召唤帧 ：\n",
    "\n",
    "**68**（启动符）**0E**（长度）**08  00**（发送序号）**02  00**（接收序号）**64**（类型标示）**01**（可变结构限定词）**0A  00**（传输原因）**01  00**（公共地址）**00 00 00**（信息体地址）**14**（区分是总召唤还是分组召唤，02 年修改后的规约中没有分组召唤）\n",
    "\n",
    "发送→S 帧 ：\n",
    "\n",
    "**68****04  01  00  0A  00**\n",
    "\n",
    "**第三步****:****发送对时报文****(****通过设置****RTU****参数表中的****”****对间间隔****”,****单位是分钟****,****一般是****20****分钟****)**\n",
    "\n",
    "发送→对时命令 ：\n",
    "\n",
    "**68**（启动符）**14**（长度）**02  00**（发送序号）**0A  00**（接收序号）**67**（类型标示）**01**（可变结构限定词）**06  00**（传输原因）**01  00**（公共地址）**00 00 00**（信息体地址）**01**（毫秒低位）**02**（毫秒高位）**03**（分钟）**04**（时）**81**（日与星期）**09**（月）**05**（年）\n",
    "\n",
    "接收→对时确认 ：\n",
    "\n",
    "**68**（启动符）**14**（长度）**0C  00**（发送序号）**02  00**（接收序号）**67**（类型标示）**01**（可变结构限定词）**07  00**（传输原因）**01  00**（公共地址）**00 00 00**（信息体地址）******（毫秒低位）******（毫秒高位）******（分钟）**04**（时）**81**（日与星期）**09**（月）**05**（年）\n",
    "\n",
    "发送→S 帧 ：\n",
    "\n",
    "**68  04  01  00  0E  00**\n",
    "\n",
    "**第四步****:****电度总召唤****(****如果没有电度此步骤可以省略且可以在对时之前以送****.****通过设置参数中****”****全数据扫描间隔****”,****单位是分钟一般是****15****分钟召唤一交****,****如果不需要召唤电度一定要将参数中的电度个数设为****0)**\n",
    "\n",
    "发送→召唤电度 ：\n",
    "\n",
    "**68**（启动符）**0E**（长度）**04  00**（发送序号）**0E  00**（接收序号）**65**（类型标示）**01**（可变结构限定词）**06  00**（传输原因）**01  00**（公共地址）**00 00 00**（信息体地址）**45**（QCC）\n",
    "\n",
    "接收→召唤确认 (发送帧的镜像, 除传送原因不同) ：\n",
    "\n",
    "**68**（启动符）**0E**（长度）**10  00**（发送序号）**06  00**（接收序号）**65**（类型标示）**01**（可变结构限定词）**07  00**（传输原因）**01  00**（公共地址）**00 00 00**（信息体地址）**45**（QCC）\n",
    "\n",
    "发送→S 帧 ：\n",
    "\n",
    "**68  04  01  00  12  00**\n",
    "\n",
    "接收→电度数据 ：\n",
    "\n",
    "**68**（启动符）**1A**（长度）**12  00**（发送序号）**06  00**（接收序号）**0F**（类型标示）**02**（可变结构限定词, 有两个电度量上送）**05  00**（传输原因）**01  00**（公共地址）**01 0C 00**（信息体地址，从 0X0C01 开始第 0 号电度）**00 00 00 00**（电度值）**00**（描述信息）**02 0C 00**（信息体地址，从 0X0C01 开始第 1 号电度）**00 00 00 00**（电度值）**01**（描述信息）\n",
    "\n",
    "发送→S 帧 ：\n",
    "\n",
    "**68  04  01  00  14  00**\n",
    "\n",
    "接收→结束总召唤帧 ：\n",
    "\n",
    "**68**（启动符）**0E**（长度）**14  00**（发送序号）**06  00**（接收序号）**65**（类型标示）**01**（可变结构限定词）**0A  00**（传输原因）**01  00**（公共地址）**00 00 00**（信息体地址）**45**（QCC）\n",
    "\n",
    "发送→S 帧 ：\n",
    "\n",
    "**68****04  01  00  16  00**\n",
    "\n",
    "**第五步****:****如果****RTU****有变化数据主动上送，****主动上送变位遥信，****类型标识为****1****或****3**\n",
    "\n",
    "接收→变位遥信 ：\n",
    "\n",
    "**68**（启动符）**0E**（长度）**16  00**（发送序号）**06  00**（接收序号）**01**（类型标示，单点遥信）**01**（可变结构限定词，有 1 个变位遥信上送）**03  00**（传输原因，表突发事件）**01  00**（公共地址即 RTU 地址）**03 00 00**（信息体地址，第 3 号遥信）**00**（遥信分）\n",
    "\n",
    "发送→S 帧 ：\n",
    "\n",
    "**68  04  01  00  18  00**\n",
    "\n",
    "接收→变位遥信 ：\n",
    "\n",
    "**68**（启动符）**0E**（长度）**18  00**（发送序号）**06  00**（接收序号）**03**（类型标示，双点遥信）**01**（可变结构限定词，有 1 个变位遥信上送）**03  00**（传输原因，表突发事件）**01  00**（公共地址即 RTU 地址）**06 00 00**（信息体地址，第 6 号遥信）**01**（遥信分）\n",
    "\n",
    "发送→S 帧 ：\n",
    "\n",
    "**68  04  01  00  1a  00**\n",
    "\n",
    "**主动上送****SOE,****类型标识为****0x1e****或****0x1f**\n",
    "\n",
    "接收→SOE ：\n",
    "\n",
    "**68**（启动符）**15**（长度）**1a  00**（发送序号）**06  00**（接收序号）**1e**（类型标示，单点遥信）**01**（可变结构限定词，有 1 个 SOE）**03  00**（传输原因，表突发事件）**01  00**（公共地址即 RTU 地址）**08 00 00**（信息体地址，第 8 号遥信）**00**（遥信分）**ad**（毫秒低位）**39**（毫秒高位）**1c**（分钟）**10**（时）**7a**（日与星期）**0b**（月）**05**（年）\n",
    "\n",
    "发送→S 帧 ：\n",
    "\n",
    "**68  04  01  00  1c  00**\n",
    "\n",
    "接收→SOE ：\n",
    "\n",
    "**68**（启动符）**15**（长度）**1c  00**（发送序号）**06  00**（接收序号）**1f**（类型标示，双点遥信）**01**（可变结构限定词，有 1 个 SOE）**03  00**（传输原因，表突发事件）**01  00**（公共地址即 RTU 地址）**0a 00 00**（信息体地址，第 10 遥信）**01**（遥信分）**2f**（毫秒低位）**40**（毫秒高位）**1c**（分钟）**10**（时）**7a**（日与星期）**0b**（月）**05**（年）\n",
    "\n",
    "**第六步****:****如果主站超过一定时间没有下发报文或****RTU****也没有上送任何报文则双方都可以按频率发送****U****帧****,****测试帧**\n",
    "\n",
    "发送→U 帧 ：\n",
    "\n",
    "**68  04  43  00  00  00**\n",
    "\n",
    "接收→应答 ：\n",
    "\n",
    "**68  04  83  00  00  00**\n",
    "\n",
    "**第七步****:****遥控**\n",
    "\n",
    "发送→遥控预置 ：\n",
    "\n",
    "**68**（启动符）**0e**（长度）**20  00**（发送序号）**06  00**（接收序号）**2e**（类型标示）**01**（可变结构限定词）**06  00**（传输原因）**01  00**（公共地址即 RTU 地址）**05 0b 00**（信息体地址，遥控号 = 0xb05-0xb01=4）**82**（控合）\n",
    "\n",
    "接收→遥控返校 ：\n",
    "\n",
    "**68**（启动符）**0e**（长度）**0e  00**（发送序号）**06  00**（接收序号）**2e**（类型标示）**01**（可变结构限定词）**07  00**（传输原因）**01  00**（公共地址即 RTU 地址）**05 0b 00**（信息体地址，遥控号 = 0xb05-0xb01=4）**82**（控合）\n",
    "\n",
    "发送→遥控执行 ：\n",
    "\n",
    "**68**（启动符）**0e**（长度）**04  00**（发送序号）**18  00**（接收序号）**2e**（类型标示）**01**（可变结构限定词）**06  00**（传输原因）**01  00**（公共地址即 RTU 地址）**05 0b 00**（信息体地址，遥控号 = 0xb05-0xb01=4）**02**（控合）\n",
    "\n",
    "接收→执行确认 ：\n",
    "\n",
    "**68**（启动符）**0e**（长度）**12  00**（发送序号）**08  00**（接收序号）**2e**（类型标示）**01**（可变结构限定词）**07  00**（传输原因）**01  00**（公共地址即 RTU 地址）**05 0b 00**（信息体地址，遥控号 = 0xb05-0xb01=4）**02**（控合）\n",
    "\n",
    "发送→遥控撤消 ：\n",
    "\n",
    "**68**（启动符）**0e**（长度）**04  00**（发送序号）**18  00**（接收序号）**2e**（类型标示）**01**（可变结构限定词）**08  00**（传输原因）**01  00**（公共地址即 RTU 地址）**05 0b 00**（信息体地址，遥控号 = 0xb05-0xb01=4）**02**（控合）\n",
    "\n",
    "接收→撤消确认 ：\n",
    "\n",
    "**68**（启动符）**0e**（长度）**12  00**（发送序号）**08  00**（接收序号）**2e**（类型标示）**01**（可变结构限定词）**09  00**（传输原因）**01  00**（公共地址即 RTU 地址）**05 0b 00**（信息体地址，遥控号 = 0xb05-0xb01=4）**02**（控合）\n",
    "\n",
    "**补充说明:**\n",
    "\n",
    "1、 报文中的长度指的是除启动字符与长度字节的所有字节。\n",
    "\n",
    "2、 注意长帧报文中的 “发送序号” 与“接收序号”具有抗报文丢失功能。\n",
    "\n",
    "3、 常用的类型标识\n",
    "\n",
    "遥测：\n",
    "\n",
    "09———带品质描述的测量值，每个遥测值占 3 个字节\n",
    "\n",
    "0a———带 3 个字节时标的且具有品质描述的测量值，每个遥测值占 6 个字节\n",
    "\n",
    "0b———不带时标的标度化值，每个遥测值占 3 个字节\n",
    "\n",
    "0c———带 3 个时标的标度化值，每个遥测值占 6 个字节\n",
    "\n",
    "0d———带品质描述的浮点值，每个遥测值占 5 个字节\n",
    "\n",
    "0e———带 3 个字节时标且具有品质描述的浮点值，每个遥测值占 8 个字节\n",
    "\n",
    "15———不带品质描述的遥测值，每个遥测值占 2 个字节\n",
    "\n",
    "遥信：\n",
    "\n",
    "01———不带时标的单点遥信，每个遥信占 1 个字节\n",
    "\n",
    "03———不带时标的双点遥信，每个遥信占 1 个字节\n",
    "\n",
    "14———具有状态变位检出的成组单点遥信，每个字节 8 个遥信\n",
    "\n",
    "SOE：\n",
    "\n",
    "02———带 3 个字节短时标的单点遥信\n",
    "\n",
    "04———带 3 个字节短时标的双点遥信\n",
    "\n",
    "1e———带 7 个字节时标的单点遥信\n",
    "\n",
    "1f———带 7 个字节时标的双点遥信\n",
    "\n",
    "KWH：\n",
    "\n",
    "0f———不带时标的电能量，每个电能量占 5 个字节\n",
    "\n",
    "10———带 3 个字节短时标的电能量，每个电能量占 8 个字节\n",
    "\n",
    "25———带 7 个字节短时标的电能量，每个电能量占 12 个字节\n",
    "\n",
    "其他：\n",
    "\n",
    "2e———双点遥控\n",
    "\n",
    "2f———双点遥调\n",
    "\n",
    "64———召唤全数据\n",
    "\n",
    "65———召唤全电度\n",
    "\n",
    "67———时钟同步\n",
    "\n",
    "4、常用的传送原因列表：\n",
    "\n",
    "1———周期、循环\n",
    "\n",
    "2———背景扫描\n",
    "\n",
    "3———突发\n",
    "\n",
    "4———初始化\n",
    "\n",
    "5———请求或被请求\n",
    "\n",
    "6———激活\n",
    "\n",
    "7———激活确认\n",
    "\n",
    "8———停止激活\n",
    "\n",
    "9———停止激活确认\n",
    "\n",
    "0a———激活结束\n",
    "\n",
    "14———响应总召唤\n",
    "\n",
    "转载请注明出处：[https://www.cnblogs.com/meandme/](https://www.cnblogs.com/meandme/)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
